# 定义play函数，其功能是调用score函数并传入由get_symbols函数获取的结果作为参数
play<-function(){
  score(get_symbols())
}

# 定义get_symbols函数，用于生成游戏中的3个随机符号（按给定概率有放回抽样）
get_symbols <- function() {
  # 定义符号的种类向量
  symbols <- c("DD", "7", "BBB", "BB", "B", "C", "0")
  # 定义对应各符号出现的概率向量
  probabilities <- c(0.03, 0.03, 0.06, 0.1, 0.25, 0.01, 0.52)
  # 按概率抽取3个符号并返回结果
  return(sample(symbols, 3, replace = TRUE, prob = probabilities))
}
# 调用一次get_symbols函数（此处调用暂未利用返回结果做更多事，可能用于测试等）
get_symbols()

# 重新定义get_symbols函数（这种重定义不太好，易混淆，通常应避免），形式上接收symbols参数但内部又重新赋值了
get_symbols <- function(symbols){
  symbols <- c("DD", "7", "BBB", "BB", "B", "C", "0")
  probabilities <- c(0.03, 0.03, 0.06, 0.1, 0.25, 0.01, 0.52)
  sample(symbols,3,replace = TRUE,prob = probabilities)
}
# 再次调用该函数（同样暂未深度利用返回结果）
get_symbols()

# 获取一组游戏符号
symbols <- get_symbols()
# 判断第一个符号是否与后两个符号都相等（返回逻辑值，可能用于后续判断特殊情况）
symbols[1]==symbols[2]&symbols[1]==symbols[3]
# 判断各符号是否与第一个符号相等（返回逻辑向量）
symbols==symbols[1]

# 定义score函数，根据传入的符号来计算游戏得分
score<-function(symbols){
  # 若所有符号相同，按对应规则获取奖品值（需外部有payout相关定义）
  if(all(symbols==symbols[1])){
    prize<-unname(payout[symbols[1]])
  }
  # 若符号都在指定几个字符中，奖品值设为5
  else if(all(symbols%in%c("BBB","BB","B"))) {
    prize<-5
  }
  # 若有符号是'C'，按'C'的个数确定奖品值
  else if(any(symbols%in%"C")){
    cherry<-sum(symbols=="C")
    prize<-c(0,2,5)[cherry]
  }
  # 其他情况奖品值设为0
  else{prize=0}
  # 统计符号中'DD'的个数，用于后续得分计算（可能涉及加倍等规则）
  diamond<-sum(symbols=="DD")
  # 输出最终得分（奖品值按规则计算后结果）
  print(prize*(2^diamond))
}

# 调用play函数，启动整个游戏逻辑（获取符号、计算得分并输出）
play()
